
#ifndef _STATESPACE_H_
#define _STATESPACE_H_
#include <iostream>
#include <map>
#include <vector>
#include "state.h"
using namespace std;


class StateSpace {
	public:

		/** Constructor
		 *  param mazefile The filename and location of the maze.def to import
		 */
		virtual bool init(const char mazefile);


		/** Constructor
		 *  Initialising an empty StateSpace without previous States
		 */
		virtual bool init(const int d_step);
		

		/** Destructor
		 */
		virtual bool deinit();
		

		/** addState
		 *  Adds a State to the map
		 *  param x, y, z original coordinates of the State (will be discretized)
		 */
		virtual bool addState(const vector<double> v);


		/** discretize
		 *  Converts continous point coordinates into the discrete coordinates
		 */
		virtual bool discretize(vector<double> v);
		

		
		// Map of States in the Model referenced by their discrete point 
		map<vector<double>, State> statemap;	

		// Number of discrete steps we cluster points into
		int discrete_step;	
	
};	
	
	
#endif